// 初始化个人与公司资料功能
function initProfileManagement() {
    console.log('初始化个人与公司资料功能...');
    const profileContent = document.getElementById('profile-content');
    if (!profileContent) {
        console.error('无法找到个人资料容器元素');
        return;
    }
    
    // 加载HTML模板
    fetch('templates/manager_profile.html')
        .then(response => {
            if (!response.ok) {
                throw new Error('无法加载模板文件');
            }
            return response.text();
        })
        .then(html => {
            // 将模板内容插入到页面中
            profileContent.innerHTML = html;
            
            // 绑定事件处理
            bindProfileEvents();
            
            // 获取当前用户和公司信息
            loadProfileData();
        })
        .catch(error => {
            console.error('加载模板失败:', error);
            profileContent.innerHTML = '<div class="alert alert-danger">加载个人资料页面失败，请刷新重试</div>';
        });
}

// 加载个人和公司资料数据
function loadProfileData() {
    fetch('getCurrentUser')
        .then(response => response.json())
        .then(data => {
            if (data.success && data.user) {
                const user = data.user;
                // 获取公司信息
                fetch('getCompanyDetail?managerId=' + user.id)
                    .then(response => response.json())
                    .then(companyData => {
                        const company = companyData.success ? companyData.company : null;
                        // 显示个人与公司资料
                        displayProfileInfo(user, company);
                        // 填充表单数据
                        fillProfileForm(user, company);
                        // 更新注销公司按钮状态
                        updateDeleteCompanyButton(company);
                    })
                    .catch(error => {
                        console.error('获取公司信息失败:', error);
                        // 即使没有公司信息，也显示个人资料
                        displayProfileInfo(user, null);
                        fillProfileForm(user, null);
                        // 更新注销公司按钮状态
                        updateDeleteCompanyButton(null);
                    });
            } else {
                document.getElementById('manager-profile').innerHTML = '<div class="alert alert-warning">获取用户信息失败</div>';
            }
        })
        .catch(error => {
            console.error('获取用户信息失败:', error);
            document.getElementById('manager-profile').innerHTML = '<div class="alert alert-danger">网络错误，请稍后重试</div>';
        });
}

// 显示个人与公司资料信息
function displayProfileInfo(user, company) {
    const profileElem = document.getElementById('manager-profile');
    if (!profileElem) return;
    
    let roleText = '';
    switch (user.role) {
        case 0:
            roleText = '普通用户';
            break;
        case 1:
            roleText = '公司负责人';
            break;
        case 2:
            roleText = '系统管理员';
            break;
        default:
            roleText = '未知';
    }
    
    const userStatus = typeof user.status === 'number' ? user.status : parseInt(user.status);
    const statusText = userStatus === 1 ? '正常' : '禁用';
    
    // 获取模板并填充数据
    const templateElement = document.getElementById('user-profile-template');
    if (!templateElement) {
        console.error('找不到用户资料模板');
        return;
    }
    
    // 克隆模板内容
    const templateContent = templateElement.content.cloneNode(true);
    
    // 替换用户信息占位符
    let templateHtml = templateContent.querySelector('.user-profile-info').outerHTML;
    templateHtml = templateHtml.replace(/\{\{userId\}\}/g, user.id || '')
                              .replace(/\{\{userName\}\}/g, user.name || '')
                              .replace(/\{\{userGender\}\}/g, user.gender || '')
                              .replace(/\{\{userAge\}\}/g, user.age || '')
                              .replace(/\{\{userPhone\}\}/g, user.phone || '')
                              .replace(/\{\{userEmail\}\}/g, user.email || '未设置')
                              .replace(/\{\{userAddress\}\}/g, (user.address && user.address !== 'null') ? user.address : '未设置')
                              .replace(/\{\{userIdCard\}\}/g, (user.idCard && user.idCard !== 'null') ? maskIdCard(user.idCard) : '未设置')
                              .replace(/\{\{userRole\}\}/g, roleText)
                              .replace(/\{\{userStatus\}\}/g, statusText);
    
    // 替换公司信息占位符
    if (company) {
        templateHtml = templateHtml.replace(/\{\{companyId\}\}/g, company.id || '')
                                  .replace(/\{\{companyName\}\}/g, company.name || '')
                                  .replace(/\{\{companyPhone\}\}/g, company.phone || '未设置')
                                  .replace(/\{\{companyAddress\}\}/g, company.address || '未设置')
                                  .replace(/\{\{companyCreditCode\}\}/g, company.creditCode || '未设置')
                                  .replace(/\{\{companyEmployeeCount\}\}/g, company.employeeCount || '0')
                                  .replace(/\{\{companyStatus\}\}/g, company.status === 1 ? '正常' : '已注销');
    } else {
        // 如果没有公司信息，替换为默认值
        templateHtml = templateHtml.replace(/\{\{companyId\}\}/g, '未设置')
                                  .replace(/\{\{companyName\}\}/g, '未创建公司')
                                  .replace(/\{\{companyPhone\}\}/g, '未设置')
                                  .replace(/\{\{companyAddress\}\}/g, '未设置')
                                  .replace(/\{\{companyCreditCode\}\}/g, '未设置')
                                  .replace(/\{\{companyEmployeeCount\}\}/g, '0')
                                  .replace(/\{\{companyStatus\}\}/g, '未创建');
    }
    
    // 设置HTML内容
    profileElem.innerHTML = templateHtml;
}

// 身份证号脱敏处理，将中间10位替换为*号
function maskIdCard(idCard) {
    if (!idCard || idCard.length < 15) return idCard;
    
    // 对于18位身份证
    if (idCard.length === 18) {
        return idCard.substring(0, 4) + '**********' + idCard.substring(14);
    }
    
    // 对于15位身份证
    if (idCard.length === 15) {
        return idCard.substring(0, 3) + '*********' + idCard.substring(12);
    }
    
    // 其他情况，只显示前4位和后4位
    return idCard.substring(0, 4) + '*'.repeat(idCard.length - 8) + idCard.substring(idCard.length - 4);
}

// 填充表单数据
function fillProfileForm(user, company) {
    // 填充个人资料
    document.getElementById('profile-name').value = user.name || '';
    document.getElementById('profile-gender').value = user.gender || '男';
    document.getElementById('profile-phone').value = user.phone || '';
    document.getElementById('profile-email').value = user.email || '';
    document.getElementById('profile-address').value = user.address || '';
    
    // 填充公司资料
    if (company) {
        document.getElementById('company-name').value = company.name || '';
        document.getElementById('company-phone').value = company.phone || '';
        document.getElementById('company-address').value = company.address || '';
    }
}

// 绑定事件处理
function bindProfileEvents() {
    // 修改信息按钮
    const editBtn = document.getElementById('edit-profile-btn');
    if (editBtn) {
        editBtn.addEventListener('click', function() {
            document.getElementById('manager-profile').style.display = 'none';
            document.getElementById('profile-form-container').style.display = 'block';
            document.getElementById('edit-profile-btn').style.display = 'none';
        });
    }
    
    // 取消修改按钮
    const cancelBtn = document.getElementById('cancel-edit-btn');
    if (cancelBtn) {
        cancelBtn.addEventListener('click', function() {
            document.getElementById('profile-form-container').style.display = 'none';
            document.getElementById('manager-profile').style.display = 'block';
            document.getElementById('edit-profile-btn').style.display = 'inline-block';
        });
    }
    
    // 表单提交
    const form = document.getElementById('update-profile-form');
    if (form) {
        form.addEventListener('submit', function(event) {
            event.preventDefault();
            
            // 获取表单数据
            const name = document.getElementById('profile-name').value.trim();
            const gender = document.getElementById('profile-gender').value;
            const phone = document.getElementById('profile-phone').value.trim();
            const email = document.getElementById('profile-email').value.trim();
            const address = document.getElementById('profile-address').value.trim();
            const companyName = document.getElementById('company-name').value.trim();
            const companyPhone = document.getElementById('company-phone').value.trim();
            const companyAddress = document.getElementById('company-address').value.trim();
            
            // 调试日志
            console.log('表单提交值:', {
                name, gender, phone, email, address, companyName, companyPhone, companyAddress
            });
            
            // 表单验证
            if (!name || !gender || !phone || !companyName) {
                console.error('表单验证失败:', {
                    nameValid: !!name,
                    genderValid: !!gender,
                    phoneValid: !!phone,
                    companyNameValid: !!companyName
                });
                showMessage('姓名、性别、手机号和公司名称不能为空', 'error');
                return;
            }
            
            // 构建表单数据对象
            const formData = {
                name: name,
                gender: gender,
                phone: phone,
                email: email || '',
                address: address || '',
                companyName: companyName,
                companyPhone: companyPhone || '',
                companyAddress: companyAddress || ''
            };
            
            // 尝试使用JSON方式提交
            submitProfileData(formData);
        });
    }
    
    // 注销公司按钮
    const deleteCompanyBtn = document.getElementById('delete-company-btn');
    if (deleteCompanyBtn) {
        deleteCompanyBtn.addEventListener('click', showDeleteCompanyConfirmation);
    }
}

// 提交个人和公司资料数据
function submitProfileData(formData) {
    console.log('准备提交数据:', formData);
    
    // 尝试使用JSON方式提交
    fetch('updateCompanyProfile', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(formData)
    })
    .then(response => {
        console.log('JSON提交响应状态:', response.status);
        return response.json();
    })
    .then(handleProfileUpdateResponse)
    .catch(error => {
        console.error('JSON提交失败，尝试表单提交:', error);
        
        // 如果JSON提交失败，尝试使用表单方式提交
        const formDataObj = new FormData();
        Object.keys(formData).forEach(key => {
            formDataObj.append(key, formData[key]);
        });
        
        return fetch('updateCompanyProfile', {
            method: 'POST',
            body: formDataObj
        })
        .then(response => {
            console.log('表单提交响应状态:', response.status);
            return response.json();
        })
        .then(handleProfileUpdateResponse)
        .catch(err => {
            console.error('表单提交也失败:', err);
            showMessage('更新资料失败，请稍后重试', 'error');
        });
    });
}

// 处理个人资料更新响应
function handleProfileUpdateResponse(data) {
    console.log('响应数据:', data);
    if (data.success) {
        showMessage(data.message, 'success');
        
        // 更新显示
        document.getElementById('profile-form-container').style.display = 'none';
        document.getElementById('manager-profile').style.display = 'block';
        document.getElementById('edit-profile-btn').style.display = 'inline-block';
        
        // 如果需要，更新页面中的用户名显示
        const userNameElem = document.getElementById('user-name');
        if (userNameElem && data.data && data.data.user) {
            userNameElem.textContent = data.data.user.name;
        }
        
        // 重新获取并显示用户和公司信息
        loadProfileData(); // 使用 loadProfileData 重新加载数据
    } else {
        showMessage(data.message, 'error');
    }
}

// 更新注销按钮状态和文本
function updateDeleteCompanyButton(company) {
    const deleteCompanyBtn = document.getElementById('delete-company-btn');
    if (deleteCompanyBtn) {
        if (company) {
            // 有公司信息，显示注销公司按钮
            deleteCompanyBtn.disabled = false;
            deleteCompanyBtn.title = '注销公司';
            deleteCompanyBtn.textContent = '注销公司';
            deleteCompanyBtn.setAttribute('data-action', 'delete-company');
        } else {
            // 没有公司信息，显示注销账号按钮
            deleteCompanyBtn.disabled = false;
            deleteCompanyBtn.title = '注销账号';
            deleteCompanyBtn.textContent = '注销账号';
            deleteCompanyBtn.setAttribute('data-action', 'delete-account');
        }
    }
}

// 显示注销确认对话框
function showDeleteCompanyConfirmation() {
    const deleteCompanyBtn = document.getElementById('delete-company-btn');
    const action = deleteCompanyBtn ? deleteCompanyBtn.getAttribute('data-action') : '';
    
    if (action === 'delete-company') {
        // 注销公司
        if (confirm('注意：注销公司后将删除公司所有数据，包括负责人本身账号，并解除所有员工与公司的关联，此操作不可恢复！您确定要注销公司吗？')) {
            const password = prompt('请输入您的登录密码以确认此操作:');
            if (password) {
                // 验证密码
                verifyPasswordAndDeleteCompany(password);
            } else {
                showMessage('取消注销公司操作', 'info');
            }
        }
    } else if (action === 'delete-account') {
        // 注销账号
        if (confirm('确定要注销账号吗？此操作不可恢复！')) {
            deleteManagerAccount();
        }
    }
}

// 验证密码并执行公司注销
function verifyPasswordAndDeleteCompany(password) {
    // 发送密码验证请求
    fetch('verifyPassword', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ password: password })
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            // 密码验证成功，执行注销操作
            deleteCompany();
        } else {
            // 密码验证失败
            showMessage('密码错误，注销操作已取消', 'error');
        }
    })
    .catch(error => {
        console.error('密码验证失败:', error);
        showMessage('验证密码时出错，请稍后重试', 'error');
    });
}

// 注销公司负责人账号（未创建公司时）
function deleteManagerAccount() {
    fetch('deleteManagerAccount', {
        method: 'POST'
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showMessage('账号已注销，即将跳转到登录页面', 'success');
            // 延迟跳转到登录页面
            setTimeout(() => {
                window.location.href = 'index.html';
            }, 2000);
        } else {
            showMessage(data.message || '注销账号失败', 'error');
        }
    })
    .catch(error => {
        console.error('注销账号失败:', error);
        showMessage('网络错误，请稍后重试', 'error');
    });
}

// 执行公司注销
function deleteCompany() {
    fetch('deleteCompany', {
        method: 'POST'
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showMessage(data.message, 'success');
            
            // 延迟2秒后跳转到登录页面
            setTimeout(function() {
                window.location.href = 'index.html';
            }, 2000);
        } else {
            showMessage(data.message, 'error');
        }
    })
    .catch(error => {
        console.error('注销公司失败:', error);
        showMessage('网络错误，请稍后重试', 'error');
    });
}

// 显示消息提示
function showMessage(message, type = 'info') {
    // 如果全局已有showMessage函数，则直接调用
    if (window.showMessage && typeof window.showMessage === 'function' && window.showMessage !== showMessage) {
        window.showMessage(message, type);
        return;
    }
    
    // 创建消息元素
    const messageElement = document.createElement('div');
    messageElement.className = `message-toast ${type}`;
    messageElement.textContent = message;
    
    // 添加到页面
    document.body.appendChild(messageElement);
    
    // 显示动画
    setTimeout(() => {
        messageElement.classList.add('show');
    }, 10);
    
    // 3秒后移除
    setTimeout(() => {
        messageElement.classList.remove('show');
        setTimeout(() => {
            document.body.removeChild(messageElement);
        }, 300);
    }, 3000);
}

// 页面加载完成后初始化个人资料功能
document.addEventListener('DOMContentLoaded', function() {
    const profileLink = document.querySelector('.submenu-item a[data-target="profile"]');
    if (profileLink) {
        profileLink.addEventListener('click', function() {
            initProfileManagement();
        });
    }
    
    // 如果页面打开时就是在个人资料页面，则初始化个人资料功能
    const profileContent = document.getElementById('profile');
    if (profileContent && profileContent.classList.contains('active')) {
        initProfileManagement();
    }
}); 